package com.jinbooks.entity.marketing;

import com.baomidou.mybatisplus.annotation.*;
import com.jinbooks.entity.BaseEntity;
import com.jinbooks.validate.EditGroup;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.util.Date;

/**
 * 营销活动实体类
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("jbx_marketing_campaign")
public class MarketingCampaign extends BaseEntity {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    @NotBlank(message = "ID不能为空", groups = {EditGroup.class})
    private String id;

    /**
     * 活动名称
     */
    private String campaignName;

    /**
     * 活动描述
     */
    private String description;

    /**
     * 开始时间
     */
    private Date startTime;

    /**
     * 结束时间
     */
    private Date endTime;

    /**
     * 客户群体（JSON格式存储）
     */
    private String customerGroup;

    /**
     * 营销方式（JSON格式存储）
     */
    private String marketingMethods;

    /**
     * 触发类型
     */
    private String triggerType;
    
    /**
     * 执行时间
     */
    private Date scheduledTime;
    
    /**
     * 任务类型
     */
    private String taskType;
    
    /**
     * 循环周期
     */
    private String recurringPattern;

    /**
     * 状态
     */
    private String status;

    /**
     * 删除标记：y-已删, n-正常
     */
    @TableField(fill = FieldFill.INSERT)
    @TableLogic(value = "n", delval = "y")
    private String deleted;

}